﻿#ifndef WRWORKTCPCOMMSERVERINTERFACE_H
#define WRWORKTCPCOMMSERVERINTERFACE_H

#include "WRWorkTcpCommServerObject.h"
#include "WRWorkTcpCommServerAffair.h"

//表示工作TCP通讯服务器接口。
class WRWorkTcpCommServerInterface
{
    friend class WRWorkTcpCommServerObject;
    friend class WRWorkTcpCommServerAffair;

private:
    QUuid m_uuid;
    QString m_name;
    int m_index;
    WRWorkTcpCommServerObject* m_object;
    WRWorkTcpCommServerAffair* m_affair;

protected:
    //初始化工作TCP通讯服务器接口。
    WRWorkTcpCommServerInterface(const QUuid& uuid, const QString& name, int index, WRWorkTcpCommServerObject* target)
        : m_uuid(uuid), m_name(name), m_index(index), m_object(target), m_affair(0)
    {
        //add code here
    }
    //初始化工作TCP通讯服务器接口。
    WRWorkTcpCommServerInterface(const QUuid& uuid, const QString& name, int index, WRWorkTcpCommServerAffair* target)
        : m_uuid(uuid), m_name(name), m_index(index), m_object(target->owner()), m_affair(target)
    {
        //add code here
    }

    //清理当前对象所占用的相关资源。
    virtual ~WRWorkTcpCommServerInterface(void)
    {
        //add code here
    }

public:
    //获取标识。
    inline const QUuid& uuid(void) const
    {
        return m_uuid;
    }
    //获取接口名称。
    inline const QString& name(void) const
    {
        return m_name;
    }
    //获取索引。
    inline int index(void) const
    {
        return m_index;
    }

    //获取对象。
    inline WRWorkTcpCommServerObject* object(void) const
    {
        return m_object;
    }
    //获取事务。
    inline WRWorkTcpCommServerAffair* affair(void) const
    {
        return m_affair;
    }

    //执行关闭处理。
    virtual void shutdown(void)
    {
        //add code here
    }

    //处理数据。
    virtual void procData(const unsigned char* buf, int len) = 0;
    //发送数据。
    inline bool sendData(WRDataPacket* packet)
    {
        return m_object->sendData(packet);
    }
};

#endif // WRWORKTCPCOMMSERVERINTERFACE_H
